package com.spicdt.edge.protocol.door.demo.service;

import com.spicdt.edge.protocol.door.demo.conf.DoorConf;
import com.spicdt.edge.protocol.door.demo.model.dto.*;
import com.spicdt.edge.protocol.door.demo.model.po.Department;
import com.spicdt.iedge.psdk.data.Response;

public interface DoorBaseService {


    public Response getToken(DoorConf doorConf);


    public Response heartbeat();


    /**
     * 获取所有门的状态
     *
     * @return
     */
    public Response allDoorState(DeviceRecordQueryDTO deviceRecordQueryDTO);


    /**
     * 获取门禁事件列表信息
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param pageNo    页码
     * @param pageSize  页大小
     * @return
     */
    public Response getDoorEventList(String startTime, String endTime, Integer pageNo, Integer pageSize);
    /**
     * 获取员工信息
     */
    public Response getStaffInfo(UserQueryDTO userQueryDTO);

    /**
     * 新增员工
     */
    public Response addStaffInfo(StaffInfoDTO staffInfoDTO);
    /**
     * 按门删除权限
     */
    public Response deleteDoorPermission(DeleteAccessByDoorsDTO deleteAccessByDoorsDTO);
    /**
     * 按门分配权限
     */
    public Response editDoorPermission(EditAccessByDoorsDTO  editAccessByDoorsDTO);
    /**
     * 获取部门信息
     */
    public Response getDepartmentInfo(DepartmentQueryDTO departmentQueryDTO);
    /**
     * 修改部门信息
     */
    public Response updateDepartmentInfo(Department department);
    /**
     * 删除部门信息
     */
    public Response deleteDepartmentInfo(String departmentID);
    /**
     * 新增部门信息
     */
    public Response addDepartmentInfo(AddDepartmentDTO addDepartmentDTO);
    /**
     * 远程控制
     */
    public Response remoteControl(DeviceRemoteControlDTO deviceRemoteControlDTO);
    /**
     * 获取设备记录
     */
    public Response getDeviceRecord(DeviceRecordQueryDTO deviceRecordQueryDTO);


    /**
     * 获取事件代码
     */
    public Response getEventCode();
    /**
     * 获取员工最后刷卡记录
     */
    public Response getLastRecord(StaffQueryDTO staffQueryDTO);
    /**
     * 新增卡片
     */
    public Response addCard(StaffCardDTO staffCardDTO);
    /**
     * 删除卡片
     */
    public Response deleteCard(String staffID, String cardID);
    /**
     * 获取卡类型
     */
    public Response getCardType();
    /**
     * 离职员工
     */
    public Response resignStaff(StaffResignDTO staffResignDTO);
    /**
     * 修改员工
     */
    public Response updateStaff(StaffInfoDTO staffInfoDTO);

    void setCurrentToken(String currentToken);
}
